#
# Copyright (c) 2004-2009 The Trustees of Indiana University and Indiana
#                         University Research and Technology
#                         Corporation.  All rights reserved.
# Copyright (c) 2004-2005 The University of Tennessee and The University
#                         of Tennessee Research Foundation.  All rights
#                         reserved.
# Copyright (c) 2004-2009 High Performance Computing Center Stuttgart,
#                         University of Stuttgart.  All rights reserved.
# Copyright (c) 2004-2005 The Regents of the University of California.
#                         All rights reserved.
# Copyright (c) 2008-2019 Cisco Systems, Inc.  All rights reserved
# Copyright (c) 2008      Sun Microsystems, Inc.  All rights reserved.
# Copyright (c) 2010-2011 Sandia National Laboratories. All rights reserved.
# Copyright (c) 2013-2015 Los Alamos National Security, LLC. All rights
#                         reserved.
# Copyright (c) 2015-2019 Intel, Inc.  All rights reserved.
# Copyright (c) 2015-2020 Research Organization for Information Science
#                         and Technology (RIST).  All rights reserved.
# Copyright (c) 2016      IBM Corporation.  All rights reserved.
# Copyright (c) 2018      FUJITSU LIMITED.  All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#

# We always have C bindings, but do we have profiling?

if BUILD_MPI_BINDINGS_LAYER
c_mpi_lib = mpi/c/libmpi_c_mpi.la mpi/tool/libmpi_mpit.la
else
c_mpi_lib =
endif
c_pmpi_lib = mpi/c/profile/libmpi_c_pmpi.la mpi/tool/profile/libmpi_pmpit.la

# See if we have Fortran mpif.h MPI bindings

if OMPI_BUILD_FORTRAN_MPIFH_BINDINGS
mpi_fortran_base_lib = mpi/fortran/base/libmpi_fortran_base.la
else
mpi_fortran_base_lib =
endif

# Note that the ordering of "." in SUBDIRS is important: the Fortran
# mpif.h, and use mpi/use mpi_f08 bindings are all in standalone .la
# files that depend on libmpi.la.  So we must fully build libmpi.la
# first.

# NOTE: A handful of files in mpi/fortran/base must be included in
# libmpi.la.  But we wanted to keep all the Fortran sources together
# in the same tree, so we moved those sources to a separate
# subdirectory with its own Makefile.include that is included in this
# Makefile.am (NOTE: it did *not* work to put all the files -- base
# and non-base -- into mpi/fortran/mpif-h and have both a regular
# Makefile.am for building the mpif.h bindings library and a separate
# Makefile.include that was included in this top-level Makefile.am;
# problems occurred with "make distclean" and files in the
# ompi/mpi/fortran/mpif-h/.deps directory -- it's not clear whether
# this is an AM bug or whether this behavior is simply not supported).
# This ompi/mpi/fortran/base/Makefile.include file makes a convenience
# LT library that is then sucked into libmpi.la (the
# ompi/mpi/fortran/base sources must be compiled with special
# CPPFLAGS; we can't just add the raw sources to libmpi_la_SOURCES,
# unfortunately).

# The end of the result is that libmpi.la -- including a few sources
# from mpi/fortran/base -- is fully built before the mpif.h, and
# use mpi/use mpi_f08 bindings are built.  Therefore, the mpif.h
# and use mpi/use mpi_f08 bindings libraries can all link against
# libmpi.la.

# NOTE: The ordering of this list is VERY CAREFULLY CRAFTED!  Do not
# change the ordering unless you really know what you're doing.  :-)

SUBDIRS = \
        include \
        datatype \
        debuggers \
        etc \
        mpi/c \
        mpi/tool \
        $(OMPI_MPIEXT_C_DIRS) \
        mpi/fortran/base/ \
        $(MCA_ompi_FRAMEWORKS_SUBDIRS) \
        $(MCA_ompi_FRAMEWORK_COMPONENT_STATIC_SUBDIRS) \
        . \
        $(OMPI_MPIEXT_MPIFH_DIRS) \
        mpi/fortran/mpif-h \
        mpi/fortran/use-mpi \
        $(OMPI_MPIEXT_USEMPI_DIR) \
        $(OMPI_FORTRAN_USEMPI_DIR) \
        mpi/fortran/mpiext-use-mpi \
        mpi/fortran/use-mpi-f08/base \
        mpi/fortran/use-mpi-f08/mod \
        mpi/fortran/use-mpi-f08/bindings \
        $(OMPI_MPIEXT_USEMPIF08_DIRS) \
        mpi/fortran/use-mpi-f08 \
        mpi/fortran/mpiext-use-mpi-f08 \
        $(MCA_ompi_FRAMEWORK_COMPONENT_DSO_SUBDIRS) \
        $(OMPI_CONTRIB_SUBDIRS) \
        mpi/man/man3 \
        mpi/man/man5

if OMPI_WANT_JAVA_BINDINGS
SUBDIRS += \
        mpi/java
endif

# The ordering of the DIST_SUBDIRS isn't as important, but note that
# its contents *are* different than SUBDIRS.  In particular, the
# MPIEXT subdirs has a different value that is *not* equivalent to the
# union of the various $(OMPI_MPIEXT_*_DIRS) variables from SUBDIRS!

DIST_SUBDIRS = \
        include \
        datatype \
        debuggers \
        etc \
        mpi/c \
        mpi/tool \
        mpi/fortran/base \
        mpi/fortran/mpif-h \
        mpi/fortran/use-mpi \
        mpi/fortran/use-mpi-tkr \
        mpi/fortran/use-mpi-ignore-tkr \
        mpi/fortran/mpiext-use-mpi \
        mpi/fortran/use-mpi-f08 \
        mpi/fortran/use-mpi-f08/base \
        mpi/fortran/use-mpi-f08/mod \
        mpi/fortran/use-mpi-f08/bindings \
        mpi/fortran/mpiext-use-mpi-f08 \
        mpi/java \
        $(OMPI_MPIEXT_ALL_SUBDIRS) \
        $(MCA_ompi_FRAMEWORKS_SUBDIRS) \
        $(MCA_ompi_FRAMEWORK_COMPONENT_ALL_SUBDIRS) \
        $(OMPI_CONTRIB_DIST_SUBDIRS) \
        mpi/man/man3 \
        mpi/man/man5

# Build the main MPI library

lib_LTLIBRARIES = lib@OMPI_LIBMPI_NAME@.la
lib@OMPI_LIBMPI_NAME@_la_SOURCES =
lib@OMPI_LIBMPI_NAME@_la_LIBADD = \
        datatype/libdatatype.la \
        debuggers/libdebuggers.la \
        mpi/c/libmpi_c.la \
        mpi/tool/libmpi_mpit_common.la \
        $(c_mpi_lib) \
        $(c_pmpi_lib) \
        $(mpi_fortran_base_lib) \
        $(MCA_ompi_FRAMEWORK_LIBS) \
        $(OMPI_MPIEXT_C_LIBS) \
        $(OMPI_LIBMPI_EXTRA_LIBS)


lib@OMPI_LIBMPI_NAME@_la_LIBADD += \
        $(OMPI_TOP_BUILDDIR)/opal/lib@OPAL_LIB_PREFIX@open-pal.la
lib@OMPI_LIBMPI_NAME@_la_DEPENDENCIES = $(lib@OMPI_LIBMPI_NAME@_la_LIBADD)
lib@OMPI_LIBMPI_NAME@_la_LDFLAGS = \
       -version-info $(libmpi_so_version) \
        $(OMPI_LIBMPI_EXTRA_LDFLAGS)

# included subdirectory Makefile.am's and appended-to variables
headers =
noinst_LTLIBRARIES =
include_HEADERS =
dist_ompidata_DATA =
lib@OMPI_LIBMPI_NAME@_la_SOURCES += $(headers)

# Conditionally install the header files

if WANT_INSTALL_HEADERS
ompidir = $(ompiincludedir)/$(subdir)
nobase_ompi_HEADERS = $(headers)
endif

include class/Makefile.am
include attribute/Makefile.am
include communicator/Makefile.am
include dpm/Makefile.am
include errhandler/Makefile.am
include file/Makefile.am
include group/Makefile.am
include info/Makefile.am
include interlib/Makefile.am
include message/Makefile.am
include op/Makefile.am
include peruse/Makefile.am
include proc/Makefile.am
include request/Makefile.am
include runtime/Makefile.am
include win/Makefile.am
include tools/Makefile.am
include mpi/Makefile.am
include mpiext/Makefile.am
include patterns/net/Makefile.am
include patterns/comm/Makefile.am
include mca/Makefile.am
include util/Makefile.am

distclean-local:
	rm -f mpiext/static-components.h
